package ercahshu

import "math"

func isBalanced(root *TreeNode) bool {
	// 使用每一个节点的最大深度和最小深度相差小于等于1,的该平衡二叉树的原理进行处理
	if root == nil {
		return true
	}
	leftH, rightH := heightCompare(root.Left), heightCompare(root.Right)
	if !Abs(leftH, rightH) {
		return false
	}
	return isBalanced(root.Left) && isBalanced(root.Right)
}

func Abs(a, b int) bool {
	x := a - b
	abs := math.Abs(float64(x))
	if abs <= 1 {
		return true
	}
	return false
}

func heightCompare(node *TreeNode) int {
	if node == nil {
		return 0
	}
	return heightCompare(node.Left) + heightCompare(node.Right) + 1
}
